
//动态生成路由的逻辑处理



function getRouterLists(list: any, arrs: any = []) {
    list.forEach((item: any) => {
        //判断 如果这一项有children这个 属性 ，在循环，
        if (item.children) {
            arrs = [...arrs, ...getRouterLists(item.children, [])]
        } else {
            arrs.push(item)
        }

        // 第一层

    })

    return arrs
}

import { getRouterDatas } from '@/http/api/login'
import { utilFuns } from '@/router/moudles/index'  //所有的动态的路由信息
import router from '@/router'
export default {

    namespaced: true,
    state: {
        routerList: [],
        isRoutes:false

    },
    mutations: {
        changeRouterList(state: any) {
            //动态的生成路由 =》
        }
    },
    actions: {  // 就是得到异步数据
        ayRchangeRouterList(store: any) {
            //发送异步请求获取到这个用户的权限数据

            getRouterDatas({}).then((res: any) => {

                //获取到异步数据 
                //数据 树形结构 =》 扁平化（children）
                //写一个方法   [ {}]


                if (res.code == 200) {
                    //    res.list.forEach((item:any)=>{
                    //获取到数据
                    let arrs = getRouterLists(res.list) //
                    //根据这个数据 =》生成路由表 =》router.addRoute

                    // router.addRoute('layout',路由信息)

                    // 路由信息 怎么获取的到=》查表的思想=》 
                    //获取到完整的路由信息数组（动态的）
                    let addRouteS: any = []
                    arrs.forEach((items: any) => {
                        console.log(444111, items);

                        utilFuns.forEach((ite: any) => {
                            if (items.path == '/' + ite.path) {
                                addRouteS.push(ite)
                            }
                        })
                    })

                    console.log(addRouteS, 55555555);

                    //动态生成路由
                    addRouteS.forEach((ie: any) => {
                        router.addRoute('layout', ie)
                    })

                }

             //现在有一个问题=》动态的路由浏览器刷新=》清空
             //  1vuex => 存放一个数据 =》当这个数据为默认值
             //  2路由守卫 => 监听vuex中的在数据如果这个数据默认值， 重新 调用vuex 的这个方法
            })

        }
    }



}